home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
AXREAD12.ZIP
/
READ.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1996-08-03
|
17KB
|
1,221 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
Boolean BOOLEAN010
Boolean BOOLEAN011
Boolean BOOLEAN012
Boolean BOOLEAN013
Boolean BOOLEAN014
Boolean BOOLEAN015
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER011
Integer TINTEGER012(3)
Integer TINTEGER013(3)
String STRING001
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
String STRING032
String TSTRING033(10)
String TSTRING034(10)
String TSTRING035(10)
String STRING036
String STRING037
String STRING038
String STRING039
String STRING040
String STRING041
String STRING042
String STRING043
String STRING044
String STRING045
String STRING046
String STRING047
String STRING048
String STRING049
String STRING050
String STRING051
String STRING052
String STRING054
String STRING057
Int INT001
Int INT002
Int INT003
Int INT004
Int INT005
Int INT006
Int INT007
Int INT008
Declare Function FUNCTION001(String STRING053) String
Declare Function FUNCTION002(String STRING055) Boolean
Declare Function FUNCTION003(String STRING056) String
Declare Function FUNCTION004(Integer INTEGER010) Integer
Declare Procedure PROC001(String STRING002)
Declare Procedure PROC002(String STRING003, Integer INTEGER001, String STRING004)
Declare Procedure PROC003(String STRING005, String STRING006, String STRING007, String STRING008)
Declare Procedure PROC004(String STRING009, String STRING010, String STRING011, String STRING012, Integer INTEGER002, String STRING013, String STRING014, String STRING015, String STRING016, Boolean BOOLEAN001, Boolean BOOLEAN002)
Declare Procedure PROC005(Integer INTEGER006, Integer INTEGER007, Var Integer INTEGER008)
Declare Procedure PROC006()
Declare Procedure PROC007(Var Int INT009, Int INT010)
Declare Procedure PROC008(Integer INTEGER009)
Declare Procedure PROC009(Int INT011)
;------------------------------------------------------------------------------
Goto LABEL004
End
;------------------------------------------------------------------------------
Procedure PROC001(String STRING002)
GetUser
FOpen 3, STRING002, 1, 3
FPutLn 3, PCBMac("@BOARDNAME@")
STRING001 = ReadLine(PCBDat(), 2)
Tokenize STRING001
FPutLn 3, GetToken()
FPutLn 3, GetToken()
If (OnLocal()) Then
STRING001 = "COM0:"
Else
STRING001 = ReadLine(PCBDat(), 52)
Endif
FPutLn 3, STRING001
If (OnLocal()) Then
STRING001 = "0 BAUD,N,8,1"
Else
STRING001 = ReadLine(PCBDat(), 53) + " BAUD,N,8,1"
Endif
FPutLn 3, STRING001
FPutLn 3, "0"
If (U_Alias == "") Then
STRING001 = U_Name()
Else
STRING001 = U_Alias
Endif
Tokenize STRING001
FPutLn 3, GetToken()
FPutLn 3, GetToken()
FPutLn 3, U_City
FPutLn 3, "1"
FPutLn 3, U_Sec
FPutLn 3, PCBMac("@TIMELEFT@")
FClose 3
FClose -1
EndProc
;------------------------------------------------------------------------------
Procedure PROC002(String STRING003, Integer INTEGER001, String STRING004)
MsgToFile CurConf(), INTEGER001, TempPath() + "temp" + String(PcbNode())
FOpen 2, TempPath() + "temp" + String(PcbNode()), 0, 3
While (STRING001 <> "Message Body:") Do
FGet 2, STRING001
EndWhile
FOpen 3, STRING003, 1, 3
:LABEL001
If (Ferr(2)) Goto LABEL003
FGet 2, STRING001
If (Left(STRING001, 1) == Chr(1)) Goto LABEL002
If (Left(STRING001, Len(STRING004)) == STRING004) Then
FPutLn 3, STRING001
Else
FPutLn 3, STRING004 + STRING001
Endif
:LABEL002
Goto LABEL001
:LABEL003
FClose 2
FClose 3
Delete TempPath() + "temp" + String(PcbNode())
EndProc
;------------------------------------------------------------------------------
Procedure PROC003(String STRING005, String STRING006, String STRING007, String STRING008)
FOpen 3, STRING005, 1, 0
FPutLn 3, Mixed(STRING007)
FPutLn 3, Mixed(STRING006)
FPutLn 3, STRING008
FPutLn 3, String(HiMsgNum() + 1)
FPutLn 3, ConfInfo(CurConf(), 1)
FPutLn 3, "NO"
FClose 3
EndProc
;------------------------------------------------------------------------------
Procedure PROC004(String STRING009, String STRING010, String STRING011, String STRING012, Integer INTEGER002, String STRING013, String STRING014, String STRING015, String STRING016, Boolean BOOLEAN001, Boolean BOOLEAN002)
PROC001(STRING011)
If (BOOLEAN002) PROC002(STRING010, INTEGER002, STRING016)
PROC003(STRING012, STRING013, STRING014, STRING015)
SaveScrn
If (Right(TempPath(), 1) == "\") Then
STRING001 = TempPath()
Else
STRING001 = TempPath() + "\"
Endif
Shell 1, INT001, STRING009, STRING001
RestScrn
Delete STRING011
If (Exist(TempPath() + "MSGABT")) Then
Delete TempPath() + "MSGABT"
Wait
ElseIf (BOOLEAN001) Then
Message CurConf(), STRING013, STRING014, STRING015, "R", 0, 0, ConfInfo(CurConf(), 31), STRING010
Else
Message CurConf(), STRING013, STRING014, STRING015, "N", 0, 0, ConfInfo(CurConf(), 31), STRING010
Endif
Delete STRING010
Delete STRING012
EndProc
:LABEL004
INTEGER005 = CurConf()
If (Exist(PPEPath() + "REPLY" + String(PcbNode()))) Then
BOOLEAN006 = 0
Delete PPEPath() + "REPLY" + String(PcbNode())
Else
BOOLEAN006 = 1
Endif
INT006 = ReadLine(PCBDat(), 6)
INT007 = ReadLine(PCBDat(), 7)
INTEGER004 = ReadLine(PCBDat(), 108)
INT008 = ReadLine(PCBDat(), 131)
FCloseAll
FOpen 1, PPEPath() + "READ.CFG", 0, 0
FGet 1, STRING029
FGet 1, STRING030
FGet 1, STRING031
FGet 1, STRING032
FClose 1
STRING017 = PPEPath() + "READTEXT" + LangExt()
If (!Exist(STRING017)) STRING017 = PPEPath() + "READTEXT"
FOpen 1, STRING017, 0, 0
FGet 1, STRING036
FGet 1, STRING037
FGet 1, STRING038
FGet 1, STRING039
FGet 1, STRING040
FGet 1, STRING041
FGet 1, STRING043
FGet 1, STRING044
FGet 1, STRING045
FGet 1, STRING046
FGet 1, STRING047
FClose 1
STRING042 = PPEPath() + "EXT" + String(PcbNode()) + ".BAT"
If (Exist(STRING042)) Then
BOOLEAN007 = 1
Else
BOOLEAN007 = 0
Endif
BOOLEAN012 = 0
If (BOOLEAN007) Then
STRING017 = PPEPath() + "POSTBAR" + LangExt()
If (!Exist(STRING017)) STRING017 = PPEPath() + "POSTBAR"
If (Exist(STRING017)) Then
BOOLEAN012 = 1
FOpen 1, STRING017, 0, 0
FGet 1, STRING048
FGet 1, STRING049
FGet 1, STRING050
FGet 1, STRING051
FGet 1, STRING052
FGet 1, STRING001
FClose 1
If (Trim(Left(STRING001, 1), " ") == "Y") Then
BOOLEAN013 = 1
Goto LABEL005
Endif
BOOLEAN013 = 0
Endif
Endif
:LABEL005
STRING017 = PPEPath() + "READ" + String(PcbNode())
GetUser
BOOLEAN010 = U_LongHDR
Gosub LABEL024
BOOLEAN003 = 1
If (IsNonStop()) Then
BOOLEAN011 = 1
Else
BOOLEAN011 = 0
Endif
If (TokCount() == 0) Then
DispFile PPEPath() + "READMENU", 4
InputStr STRING037, STRING001, 7, 79, Mask_Ascii(), 256 + 8
Tokenize STRING001
If (Trim(STRING001, " ") == "") Then
PROC008(INTEGER005)
Endif
Goto LABEL006
Else
:LABEL006
Newline
STRING001 = Trim(Upper(GetToken()), " ")
Select Case (STRING001)
Case "A"
BOOLEAN003 = 1
BOOLEAN004 = 1
DispText 145, 256
INTEGER003 = U_Lmr(CurConf()) + 1
Case "L"
BOOLEAN003 = 0
INTEGER003 = HiMsgNum()
Case "Y"
BOOLEAN003 = 1
BOOLEAN005 = 1
INTEGER003 = U_Lmr(CurConf())
PrintLn STRING046
Newline
Case 0
BOOLEAN003 = 0
INTEGER003 = S2I(Trim(StripStr(STRING001, "-"), " "), 10)
Case 0
BOOLEAN003 = 1
INTEGER003 = S2I(Trim(StripStr(STRING001, "+"), " "), 10)
Case Else
INTEGER003 = S2I(STRING001, 10)
Endif
End Select
:LABEL007
BOOLEAN009 = 0
If (BOOLEAN005) Then
INTEGER003 = FUNCTION004(INTEGER003)
If (INTEGER003 == -1) Then
PROC008(INTEGER005)
Endif
Endif
If (INTEGER003 > HiMsgNum()) Then
SetLmr CurConf(), HiMsgNum()
If (BOOLEAN004) Then
PROC005(CurConf(), INTEGER004, INTEGER003)
Endif
Endif
If (Exist(STRING017)) Delete STRING017
MsgToFile CurConf(), INTEGER003, STRING017
If (Exist(STRING017)) Goto LABEL009
If (INTEGER003 < LoMsgNum()) Then
If (BOOLEAN003) Then
Inc INTEGER003
Goto LABEL007
Goto LABEL008
Endif
PROC008(INTEGER005)
Endif
:LABEL008
If (INTEGER003 > HiMsgNum()) PROC008(INTEGER005)
If (BOOLEAN003) Then
Inc INTEGER003
Else
Dec INTEGER003
Endif
Goto LABEL007
:LABEL009
FOpen 2, STRING017, 0, 0
For INT002 = 1 To 10
FGet 2, STRING001
STRING001 = FUNCTION001(STRING001)
If (INT002 == 1) Then
STRING019 = Trim(STRING001, " ")
Continue
Endif
If (INT002 == 2) Then
STRING025 = STRING001
Continue
Endif
If (INT002 == 3) Then
If (STRING001 == "0") Then
STRING026 = "NONE"
Goto LABEL010
Endif
STRING026 = STRING001
:LABEL010
Continue
Endif
If (INT002 == 5) Then
STRING023 = STRING001
Continue
Endif
If (INT002 == 6) Then
STRING024 = STRING001
Continue
Endif
If (INT002 == 7) Then
If (STRING001 == "@USER@") Then
If (CurSec() < SysopSec()) Then
If (U_Alias == "") Then
STRING020 = U_Name()
Goto LABEL011
Endif
STRING020 = U_Alias
:LABEL011
Goto LABEL012
Endif
STRING020 = "(generic message)"
:LABEL012
Goto LABEL013
Endif
STRING020 = STRING001
:LABEL013
Continue
Endif
If (INT002 == 9) Then
STRING021 = STRING001
Continue
Endif
If (INT002 == 10) Then
STRING022 = STRING001
Endif
Next
If (FUNCTION002(STRING019)) Goto LABEL014
FClose 2
Delete STRING017
If (BOOLEAN003) Then
Inc INTEGER003
Else
Dec INTEGER003
Endif
Goto LABEL007
:LABEL014
If (INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 10, "R")) Then
STRING027 = "YES"
Else
STRING027 = "NO"
Endif
BOOLEAN014 = 1
Gosub LABEL027
While (STRING001 <> "Message Body:") Do
FGet 2, STRING001
EndWhile
DefColor
StartDisp 1
INT003 = INT004 + 1
INT005 = 0
:LABEL015
If (Ferr(2)) Goto LABEL017
FGet 2, STRING001
If (Left(STRING001, 1) == Chr(1)) Then
TSTRING035(INT005) = Right(STRING001, Len(STRING001) - 1)
Inc INT005
Goto LABEL015
Endif
If (Left(STRING001, Len(STRING029)) == STRING029) Then
STRING001 = Right(STRING001, Len(STRING001) - Len(STRING029))
STRING001 = STRING030 + STRING001
Endif
STRING001 = ReplaceStr(STRING001, "|01", "@X01")
STRING001 = ReplaceStr(STRING001, "|02", "@X02")
STRING001 = ReplaceStr(STRING001, "|03", "@X03")
STRING001 = ReplaceStr(STRING001, "|04", "@X04")
STRING001 = ReplaceStr(STRING001, "|05", "@X05")
STRING001 = ReplaceStr(STRING001, "|06", "@X06")
STRING001 = ReplaceStr(STRING001, "|07", "@X07")
STRING001 = ReplaceStr(STRING001, "|08", "@X08")
STRING001 = ReplaceStr(STRING001, "|09", "@X09")
STRING001 = ReplaceStr(STRING001, "|10", "@X0A")
STRING001 = ReplaceStr(STRING001, "|11", "@X0B")
STRING001 = ReplaceStr(STRING001, "|12", "@X0C")
STRING001 = ReplaceStr(STRING001, "|13", "@X0D")
STRING001 = ReplaceStr(STRING001, "|14", "@X0E")
STRING001 = ReplaceStr(STRING001, "|15", "@X0F")
If (InStr(STRING001, Chr(27)) > 0) Then
PrintLn STRING001
Else
PrintLn "@X07" + STRING001
Endif
If (BOOLEAN011) Then
If (Abort()) Then
BOOLEAN011 = 0
FClose 2
Delete STRING017
Goto LABEL018
Endif
Else
If (BOOLEAN009) Goto LABEL016
Inc INT003
If (INT003 == U_PageLen - 1) Then
StartDisp 0
More
If (Abort()) Then
FClose 2
Delete STRING017
Goto LABEL018
Endif
If (IsNonStop()) BOOLEAN009 = 1
StartDisp 1
INT003 = 1
If (U_Cls) Then
If (U_Scroll) Goto LABEL016
INT003 = INT004 + 1
PROC009(INT003 + 1)
BOOLEAN009 = 0
Endif
Endif
Endif
:LABEL016
Goto LABEL015
:LABEL017
FClose 2
Delete STRING017
:LABEL018
STRING001 = ""
If (!BOOLEAN011) InputStr ReplaceStr(ReplaceStr(STRING036, "@CONF@", ConfInfo(CurConf(), 1)), "@CURMSGNUM@", INTEGER003) , STRING001, 7, 79, Mask_Ascii() , 256 + 8
Select Case (StripStr(STRING001, " "))
Case ""
If (BOOLEAN003) Then
Inc INTEGER003
Else
Dec INTEGER003
Endif
Goto LABEL007
Case "+"
Inc INTEGER003
BOOLEAN003 = 1
Goto LABEL007
Case "-"
Dec INTEGER003
BOOLEAN003 = 0
Goto LABEL007
Case ">"
INTEGER004 = ReadLine(PCBDat(), 108)
FCloseAll
If (CurConf() == INTEGER004) Then
Newline
PrintLn STRING040
Wait
Else
PROC005(CurConf(), INTEGER004, INTEGER003)
Endif
Goto LABEL007
Case "<"
INTEGER004 = -1
If (CurConf() == 0) Then
Newline
PrintLn STRING040
Wait
Else
PROC005(CurConf(), INTEGER004, INTEGER003)
Endif
Goto LABEL007
Case "!"
If (CurSec() >= SysopSec()) Then
Newline
If (INT005 == 0) Then
PrintLn STRING045
Goto LABEL019
Endif
PrintLn STRING043
Newline
DefColor
For INT002 = 0 To INT005
If (Trim(TSTRING035(INT002), " ") <> "") PrintLn TSTRING035(INT002)
Next
Newline
PrintLn STRING044
Endif
:LABEL019
Newline
Goto LABEL018
Case "A", "AG", "AGA", "AGAI", "AGAIN"
Goto LABEL007
Case ((StripStr(STRING001, " ") == "D") || (StripStr(STRING001, " ") == "DO")) || (StripStr(STRING001, " ") == "DOW"), "D", "DO", "DOW", "DOWN", "DOWNL", "DOWNLO", "DOWNLOA", "DOWNLOAD"
STRING018 = ""
Newline
If (OnLocal()) Then
InputText "@X08(@X0Alocal only@X08)@X0F capture file path@X08: _", STRING018, 7, 79
If (Trim(STRING018, " ") == "") Goto LABEL018
If (Right(STRING018, 1) == "\") Then
STRING018 = STRING018 + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
Else
STRING018 = STRING018 + "\" + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
Endif
Backup 79
ClrEol
Print "@X08(@X0Alocal only@X08)@X0F writting " + Lower(STRING018) + "@X08... "
Else
STRING018 = TempPath() + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
Endif
MsgToFile CurConf(), INTEGER003, STRING017
FOpen 2, STRING017, 0, 0
While (STRING001 <> "Message Body:") Do
FGet 2, STRING001
EndWhile
FOpen 3, STRING018, 1, 0
For INT002 = 0 To INT004
FPutLn 3, RTrim(TSTRING034(INT002), " ")
Next
:LABEL020
If (Ferr(2)) Goto LABEL021
FGet 2, STRING001
If (!(Left(STRING001, 1) == Chr(1))) FPutLn 3, StripAtx(FUNCTION003(STRING001))
Goto LABEL020
:LABEL021
FCloseAll
Delete STRING017
If (OnLocal()) Goto LABEL022
Shell 1, STRING001, "ZMSEND.EXE", STRING018
Delete STRING018
Wait
Goto LABEL023
:LABEL022
PrintLn "@X0Fdone!"
:LABEL023
Newline
Goto LABEL018
Case "R", "RE", "REP", "REPL", "REPLY"
If (BOOLEAN007) Then
If (U_Alias == "") Then
STRING001 = U_Name()
Else
STRING001 = U_Alias
Endif
PROC004(STRING042, TempPath() + "MSGTMP", TempPath() + "DORINFO1.DEF", TempPath() + "MSGINF", INTEGER003, STRING021, STRING001, STRING022, STRING029, BOOLEAN008, 1)
Goto LABEL007
Else
If (BOOLEAN003) Then
STRING001 = "+"
Else
STRING001 = "-"
Endif
STRING001 = String(INTEGER003) + STRING001
STRING018 = TempPath() + "CALLED." + String(PcbNode())
If (Exist(STRING018)) Delete STRING018
FOpen 3, STRING018, 1, 3
FPut 3, PPEPath() + PPEName() + ".PPE " + STRING001
FClose 3
If (INTEGER003 > U_Lmr(CurConf())) Then
SetLmr CurConf(), INTEGER003 - 1
Endif
PutUser
STRING018 = PPEPath() + "REPLY" + String(PcbNode())
If (Exist(STRING018)) Delete STRING018
FOpen 3, STRING018, 1, 3
FPut 3, String(INTEGER003)
FClose 3
If (BOOLEAN006) Then
KbdStuff "REPLY^M"
Endif
Endif
End
Case "L", "LA", "LAS", "LAST"
BOOLEAN003 = 0
INTEGER003 = HiMsgNum()
Goto LABEL007
Case "K", "KI", "KIL", "KILL"
Newline
If (CurSec() >= INT008) Then
If ((INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 7, U_Alias)) || (INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 11, U_Alias))) Then
KillMsg CurConf(), INTEGER003
OpText String(INTEGER003)
PrintLn STRING038
If (BOOLEAN003) Then
Inc INTEGER003
Else
Dec INTEGER003
Endif
ElseIf (CurSec() == SysopSec()) Then
KillMsg CurConf(), INTEGER003
OpText String(INTEGER003)
PrintLn STRING038
If (BOOLEAN003) Then
Inc INTEGER003
Else
Dec INTEGER003
Endif
Else
OpText String(INTEGER003)
PrintLn STRING039
Newline
Goto LABEL018
Endif
Else
OpText String(INTEGER003)
PrintLn STRING039
Newline
Goto LABEL018
Endif
Newline
Goto LABEL007
Case "P", "PO", "POS", "POST"
If (INTEGER003 > U_Lmr(CurConf())) Then
SetLmr CurConf(), INTEGER003
Endif
PutUser
Tokenize "ALL"
Call PPEPath() + "ENTER.PPE"
End
Case "NS", "NONSTOP"
BOOLEAN011 = 1
Goto LABEL018
Case "SH", "SHO", "SHOR", "SHORT"
BOOLEAN010 = 0
Gosub LABEL024
Goto LABEL007
Case "LO", "LON", "LONG"
BOOLEAN010 = 1
Gosub LABEL024
Goto LABEL007
Case "Q", "QU", "QUI", "QUIT"
PROC008(INTEGER005)
Case "?", "H", "HE", "HEL", "HELP"
StartDisp 0
DispFile PPEPath() + "READHLP", 4
StartDisp 1
Goto LABEL018
Case Else
If (InStr(STRING001, "-") > 0) Then
BOOLEAN003 = 0
INTEGER003 = S2I(Trim(StripStr(STRING001, "-"), " "), 10)
ElseIf (InStr(STRING001, "+") > 0) Then
BOOLEAN003 = 1
INTEGER003 = S2I(Trim(StripStr(STRING001, "+"), " "), 10)
Else
INTEGER003 = S2I(STRING001, 10)
Endif
Goto LABEL007
End Select
End
:LABEL024
If (BOOLEAN010) Then
STRING001 = PPEPath() + "READHDR" + LangExt()
If (!Exist(STRING001)) STRING001 = PPEPath() + "READHDR"
Else
STRING001 = PPEPath() + "READHDRS" + LangExt()
If (!Exist(STRING001)) STRING001 = PPEPath() + "READHDRS"
Endif
FOpen 1, STRING001, 0, 0
INT002 = 0
:LABEL025
If (Ferr(1)) Goto LABEL026
FGet 1, TSTRING033(INT002)
Inc INT002
Goto LABEL025
:LABEL026
FClose 1
INT004 = INT002 - 1
Return
:LABEL027
Newline
If (U_Cls) Cls
For INT002 = 0 To INT004
STRING001 = TSTRING033(INT002)
STRING001 = ReplaceStr(STRING001, "@TO@", Upper(STRING020))
STRING001 = ReplaceStr(STRING001, "@MTO@", Mixed(STRING020))
STRING001 = ReplaceStr(STRING001, "@FROM@", Upper(STRING021))
STRING001 = ReplaceStr(STRING001, "@MFROM@", Mixed(STRING021))
STRING001 = ReplaceStr(STRING001, "@SUBJECT@", STRING022)
STRING001 = ReplaceStr(STRING001, "@DATE@", ReplaceStr(STRING023, "-", STRING031))
STRING001 = ReplaceStr(STRING001, "@TIME@", ReplaceStr(STRING024, ":", STRING032))
STRING001 = ReplaceStr(STRING001, "@CURMSGNUM@", STRING025)
STRING001 = ReplaceStr(STRING001, "@HIGHMSGNUM@", String(HiMsgNum()))
STRING001 = ReplaceStr(STRING001, "@REPLYTO@", STRING026)
STRING001 = ReplaceStr(STRING001, "@READ@", STRING028)
STRING001 = ReplaceStr(STRING001, "@REPLIED@", STRING027)
STRING001 = ReplaceStr(STRING001, "@CONF@", ConfInfo(CurConf(), 1))
PrintLn STRING001
TSTRING034(INT002) = ScrText(1, GetY() - 1, 80, 0)
Next
Return
End
;------------------------------------------------------------------------------
Function FUNCTION001(String STRING053) String
Integer INTEGER006
FUNCTION001 = Right(STRING053, Len(STRING053) - 18)
If (Len(FUNCTION001) > 17) Then
FUNCTION001 = Trim(Left(FUNCTION001, 17), " ")
Endif
EndFunc
;------------------------------------------------------------------------------
Procedure PROC005(Integer INTEGER006, Integer INTEGER007, Var Integer INTEGER008)
:LABEL028
If (Abort()) PROC008(INTEGER005)
If (INTEGER007 == -1) Then
Goto LABEL032
Endif
Inc INTEGER006
:LABEL029
If (ConfSel(INTEGER006)) Goto LABEL031
Inc INTEGER006
If (INTEGER006 > INTEGER007) Then
If (BOOLEAN004) Goto LABEL030
Newlines 2
PrintLn STRING040
:LABEL030
PROC008(INTEGER005)
Endif
Goto LABEL029
:LABEL031
Goto LABEL034
:LABEL032
Dec INTEGER006
:LABEL033
If (ConfSel(INTEGER006)) Goto LABEL034
Dec INTEGER006
If (INTEGER006 < 0) Then
PROC008(INTEGER005)
Endif
Goto LABEL033
:LABEL034
If (Strip(ConfInfo(INTEGER006, 1), " ") == "") Then
Newline
OpText String(INTEGER006)
Print STRING041
Log "De-sel. non-existant conf.: '" + String(INTEGER006) + "'", 0
ConfUnflag INTEGER006, 4 + 1 + 2
SetLmr CurConf(), 0
PutUser
Goto LABEL028
Endif
If (INTEGER006 < 0) Then
If (BOOLEAN004) Goto LABEL035
Newlines 2
PrintLn STRING040
:LABEL035
PROC008(INTEGER005)
Endif
If (BOOLEAN011) Goto LABEL036
If (BOOLEAN014) Then
If (BOOLEAN012) PROC006()
Endif
:LABEL036
If (Abort()) PROC008(INTEGER005)
Command 0, "JOIN " + String(INTEGER006) + ";Q"
BOOLEAN014 = 0
INTEGER008 = U_Lmr(CurConf())
If (Abort()) PROC008(INTEGER005)
If (INTEGER008 >= HiMsgNum()) Then
DispText 78, 0
Goto LABEL028
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC006()
Newline
Print ReplaceStr(STRING048, "@CONF@", ConfInfo(CurConf(), 1))
INT002 = GetX()
If (BOOLEAN013) Then
Print STRING050 + STRING051
INT003 = 1
Else
Print STRING049 + STRING052
INT003 = 2
Endif
:LABEL037
STRING001 = Upper(TInkey(0))
Select Case (STRING001)
Case "6"
STRING001 = "RIGHT"
Case "4"
STRING001 = "LEFT"
End Select
If ((STRING001 == "LEFT") || (STRING001 == "RIGHT")) PROC007(INT003, INT002)
If (STRING001 == NoChar()) Then
INT003 = 1
PROC007(INT003, INT002)
STRING001 = Chr(13)
Endif
If (STRING001 == YesChar()) Then
INT003 = 2
PROC007(INT003, INT002)
STRING001 = Chr(13)
Endif
If (STRING001 == Chr(13)) Then
If (INT003 == 1) Then
Call PPEPath() + "ENTER.PPE"
Endif
Else
Goto LABEL037
Endif
Newline
EndProc
;------------------------------------------------------------------------------
Procedure PROC007(Var Int INT009, Int INT010)
If (INT009 == 1) Then
Backup GetX() - INT010
Print STRING049 + STRING052
INT009 = 2
Else
Backup GetX() - INT010
Print STRING050, STRING051
INT009 = 1
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC008(Integer INTEGER009)
If (INTEGER003 > U_Lmr(CurConf())) Then
SetLmr CurConf(), INTEGER003
Endif
If (INTEGER009 <> CurConf()) Then
Command 0, "JOIN " + String(INTEGER009) + ";Q"
Endif
PutUser
If (BOOLEAN005) Then
If (!BOOLEAN014) PrintLn STRING047
Endif
Newline
PrintLn "@X07Read.ppe v1.20 reading complete! @X0FM@X07av@X08erick/[@X0CANTi@X08-@X0FX@X08] @X07'96"
End
EndProc
;------------------------------------------------------------------------------
Procedure PROC009(Int INT011)
For INT002 = INT011 To U_PageLen
AnsiPos 0, INT002
ClrEol
Next
AnsiPos 0, INT011
EndProc
;------------------------------------------------------------------------------
Function FUNCTION002(String STRING055) Boolean
String STRING056
FUNCTION002 = 0
If (U_Alias == "") Then
STRING001 = U_Name()
Else
STRING001 = U_Alias
Endif
Select Case (STRING055)
Case ""
STRING028 = "N/A"
BOOLEAN008 = 0
FUNCTION002 = 1
Case "*"
STRING028 = "NO"
BOOLEAN008 = 1
If (CurSec() < INT007) Then
FUNCTION002 = 0
Else
FUNCTION002 = 1
Endif
If (STRING001 == Upper(STRING020)) FUNCTION002 = 1
If (STRING001 == Upper(STRING021)) FUNCTION002 = 1
Case "+"
STRING028 = "YES"
BOOLEAN008 = 1
If (CurSec() < INT007) Then
FUNCTION002 = 0
Else
FUNCTION002 = 1
Endif
If (STRING001 == Upper(STRING020)) FUNCTION002 = 1
If (STRING001 == Upper(STRING021)) FUNCTION002 = 1
Case "-"
STRING028 = "YES"
BOOLEAN008 = 0
FUNCTION002 = 1
Case "~"
STRING028 = "NO"
If (CurSec() < INT006) FUNCTION002 = 0
Case "`"
STRING028 = "YES"
If (CurSec() < INT006) FUNCTION002 = 0
End Select
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION003(String STRING056) String
Integer INTEGER010
STRING056 = ReplaceStr(STRING056, "|01", "")
STRING056 = ReplaceStr(STRING056, "|02", "")
STRING056 = ReplaceStr(STRING056, "|03", "")
STRING056 = ReplaceStr(STRING056, "|04", "")
STRING056 = ReplaceStr(STRING056, "|05", "")
STRING056 = ReplaceStr(STRING056, "|06", "")
STRING056 = ReplaceStr(STRING056, "|07", "")
STRING056 = ReplaceStr(STRING056, "|08", "")
STRING056 = ReplaceStr(STRING056, "|09", "")
STRING056 = ReplaceStr(STRING056, "|10", "")
STRING056 = ReplaceStr(STRING056, "|11", "")
STRING056 = ReplaceStr(STRING056, "|12", "")
STRING056 = ReplaceStr(STRING056, "|13", "")
STRING056 = ReplaceStr(STRING056, "|14", "")
FUNCTION003 = ReplaceStr(STRING056, "|15", "")
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION004(Integer INTEGER010) Integer
Integer TINTEGER012(3)
Integer TINTEGER013(3)
TINTEGER012(0) = ScanMsgHdr(CurConf(), INTEGER010, 7, U_Alias)
TINTEGER012(1) = ScanMsgHdr(CurConf(), INTEGER010, 7, U_Name())
TINTEGER012(2) = ScanMsgHdr(CurConf(), INTEGER010, 7, "@USER@")
If (U_RecNum(U_Name()) == 1) Then
TINTEGER012(3) = ScanMsgHdr(CurConf(), INTEGER010, 7, "SYSOP")
Else
TINTEGER012(3) = -1
Endif
Sort TINTEGER012, TINTEGER013
FUNCTION004 = TINTEGER012(TINTEGER013(0))
If (FUNCTION004 == -1) FUNCTION004 = TINTEGER012(TINTEGER013(1))
If (FUNCTION004 == -1) FUNCTION004 = TINTEGER012(TINTEGER013(2))
If (FUNCTION004 == -1) FUNCTION004 = TINTEGER012(TINTEGER013(3))
EndFunc
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 6 End
; 1 Cls
; 2 ClrEol
; 1 More
; 4 Wait
; 267 Goto
; 211 Let
; 7 Print
; 19 PrintLn
; 169 If
; 1 ConfUnflag
; 2 DispFile
; 13 FOpen
; 15 FClose
; 29 FGet
; 2 FPut
; 22 FPutLn
; 5 StartDisp
; 2 GetUser
; 4 PutUser
; 2 DefColor
; 15 Delete
; 1 Log
; 2 InputStr
; 4 Gosub
; 2 Return
; 12 Inc
; 8 Dec
; 19 Newline
; 2 Newlines
; 4 Tokenize
; 2 Shell
; 2 DispText
; 1 InputText
; 1 KbdStuff
; 2 Call
; 5 OpText
; 2 AnsiPos
; 3 Backup
; 2 Message
; 1 SaveScrn
; 1 RestScrn
; 1 Sort
; 5 SetLmr
; 3 FCloseAll
; 9 EndProc
; 4 EndFunc
; 3 MsgToFile
; 2 Command
; 2 KillMsg
;
;
; ■ Functions used :
;
; 8 -
; 82 +
; 9 -
; 116 ==
; 5 <>
; 13 <
; 5 <=
; 12 >
; 13 >=
; 146 !
; 10 &&
; 44 ||
; 7 Len(
; 1 Lower()
; 8 Upper()
; 10 Left()
; 5 Right()
; 4 Ferr()
; 7 Chr()
; 5 InStr()
; 5 Abort()
; 1 RTrim()
; 11 Trim()
; 6 U_Name()
; 1 NoChar()
; 1 YesChar()
; 1 StripAtx()
; 4 Strip()
; 24 String()
; 2 Mask_Ascii()
; 38 CurConf()
; 8 PCBDat()
; 19 PPEPath()
; 9 PcbNode()
; 8 ReadLine()
; 3 SysopSec()
; 4 OnLocal()
; 8 CurSec()
; 5 GetToken()
; 12 Exist()
; 6 S2I()
; 4 LangExt()
; 3 GetX()
; 1 GetY()
; 1 PPEName()
; 13 TempPath()
; 1 TokCount()
; 1 U_RecNum()
; 1 ScrText()
; 48 ReplaceStr()
; 58 StripStr()
; 4 Mixed()
; 2 ConfSel()
; 2 IsNonStop()
; 6 U_Lmr()
; 1 LoMsgNum()
; 8 HiMsgNum()
; 2 PCBMac()
; 7 ScanMsgHdr()
; 7 ConfInfo()
; 1 TInkey()
;
;------------------------------------------------------------------------------
;
; Analysis flags : FWSCds
;
; F - Change conference flags status ■ 2
; This may be normal for a SELECT replacement but it may also be
; a way to get access to conferences a user is not allowed to.
; ■ Search for : CONFFLAG, CONFUNFLAG
;
; W - Write user ■ 5
; Program writes a user record. Although this may be normal for a
; User Editor, it may also be a way to modify an account level.
; ■ Search for : PUTUSER
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
; C - Call child PPE ■ 3
; This is usually normal, but may be a tricky way to launch some
; sysop-only commands.
; ■ Search for : CALL
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
; s - Sysop level access ■ 5
; Program is reading the sysop access level, this may be normal
; but still it is very suspect. It is the best way to give a user
; all priviledges. Check!
; ■ Search for : SYSOPSEC()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 5 For/Next
; 3 While/EndWhile
; 86 If/Then or If/Then/Else
; 4 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------